/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package l2bot.network.game.ServerPackets;

//import net.sf.l2j.Config;

import l2bot.pj.cosas.Npc;

//import net.sf.l2j.gameserver.instancemanager.CursedWeaponsManager;
import l2bot.pj.cosas.ObjectPosition;
//import net.sf.l2j.gameserver.model.Inventory;
//import net.sf.l2j.gameserver.model.L2Character;
//import net.sf.l2j.gameserver.model.L2Decoy;
//import net.sf.l2j.gameserver.model.L2Summon;
//import net.sf.l2j.gameserver.model.L2Transformation;
//import net.sf.l2j.gameserver.model.L2Trap;
//import net.sf.l2j.gameserver.model.actor.instance.L2MonsterInstance;
//import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
//import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance;
/**
 * This class ...
 *
 * @version $Revision: 1.7.2.4.2.9 $ $Date: 2005/04/11 10:05:54 $
 */
public final class NpcInfo extends L2GameServerPacket
{
	//   ddddddddddddddddddffffdddcccccSSddd dddddc
	//   ddddddddddddddddddffffdddcccccSSddd dddddccffd


	//private static final String _S__22_NPCINFO = "[S] 0c NpcInfo";
	//private L2Character _activeChar;
	//private int _x, _y, _z, _heading;
	//private int _idTemplate;
	//private boolean _isAttackable, _isSummoned;
	//private int _mAtkSpd, _pAtkSpd;
	//private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flRunSpd, _flWalkSpd, _flyRunSpd, _flyWalkSpd;
	//private int _rhand, _lhand;
    //private int _collisionHeight, _collisionRadius;
    //private String _name = "";
    //private String _title = "";
    //private L2Summon _summon;
    //private int form = 0;

	/**
	 * @param _characters
	 */
	//public NpcInfo(L2NpcInstance cha, L2Character attacker)
	//{
		//_activeChar = cha;
		//_idTemplate = cha.getTemplate().idTemplate;
		//_isAttackable = cha.isAutoAttackable(attacker);
		//_rhand = cha.getRightHandItem(); 
		//_lhand = cha.getLeftHandItem(); 
		//_isSummoned = cha.isShowSummonAnimation();
        //_collisionHeight = cha.getCollisionHeight();
        //_collisionRadius = cha.getCollisionRadius();
        //if (cha.getTemplate().serverSideName)
        	//_name = cha.getTemplate().name;

        //if(Config.L2JMOD_CHAMPION_ENABLE && cha.isChampion())
            //_title = (Config.L2JMOD_CHAMP_TITLE);
        //else if (cha.getTemplate().serverSideTitle)
    		//_title = cha.getTemplate().title;
    	//else
    		//_title = cha.getTitle();

        //if (Config.SHOW_NPC_LVL && _activeChar instanceof L2MonsterInstance)
	    //{
			//String t = "Lv " + cha.getLevel() + (cha.getAggroRange() > 0 ? "*" : "");
			//if (_title != null)
				//t += " " + _title;

			//_title = t;
	    //}
//
        //_x = _activeChar.getX();
		//_y = _activeChar.getY();
		//_z = _activeChar.getZ();
		//_heading = _activeChar.getHeading();
		//_mAtkSpd = _activeChar.getMAtkSpd();
		//_pAtkSpd = _activeChar.getPAtkSpd();
		//_runSpd = _activeChar.getRunSpeed();
		//_walkSpd = _activeChar.getWalkSpeed();
		//_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
		//_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
	//}

	//public NpcInfo(L2Summon cha, L2Character attacker)
	//{
		//_activeChar = cha;
		//_summon = cha;
		//_idTemplate = cha.getTemplate().idTemplate;
		//_isAttackable = cha.isAutoAttackable(attacker); //(cha.getKarma() > 0);
		//_rhand = 0;
		//_lhand = 0;
		//_isSummoned = cha.isShowSummonAnimation();
        //_collisionHeight = _activeChar.getTemplate().collisionHeight;
        //_collisionRadius = _activeChar.getTemplate().collisionRadius;
        //if (cha.getTemplate().serverSideName || cha instanceof L2PetInstance)
    	//{
            //_name = _activeChar.getName();
    		//_title = cha.getTitle();
    	//}
        //if (_summon.getTemplate().npcId == 16025)
        //{
//			
        	//if(_summon.getLevel() >= 60 && _summon.getLevel() < 65){        		
        		//form = 1;
        	//}else if(_summon.getLevel() >= 65){ 
        		//form = 2;
        	//}
        //}
//
        //_x = _activeChar.getX();
		//_y = _activeChar.getY();
		//_z = _activeChar.getZ();
		//_heading = _activeChar.getHeading();
		//_mAtkSpd = _activeChar.getMAtkSpd();
		//_pAtkSpd = _activeChar.getPAtkSpd();
		//_runSpd = _activeChar.getRunSpeed();
		//_walkSpd = _activeChar.getWalkSpeed();
		//_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
		//_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
	//}
//	
	//public NpcInfo(L2Trap cha, L2Character attacker)
	//{
		//_activeChar = cha;
		//_idTemplate = cha.getTemplate().idTemplate;
		//_isAttackable = cha.isAutoAttackable(attacker);
		//_rhand = 0;
		//_lhand = 0;
		//_collisionHeight = _activeChar.getTemplate().collisionHeight;
		//_collisionRadius = _activeChar.getTemplate().collisionRadius;
		//_x = _activeChar.getX();
		//_y = _activeChar.getY();
		//_z = _activeChar.getZ();
		//_title = cha.getOwner().getName();
		//_heading = _activeChar.getHeading();
		//_mAtkSpd = _activeChar.getMAtkSpd();
		//_pAtkSpd = _activeChar.getPAtkSpd();
		//_runSpd = _activeChar.getRunSpeed();
		//_walkSpd = _activeChar.getWalkSpeed();
		//_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
		//_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
	//}

    //public NpcInfo(L2Decoy cha)
    //{
        //_idTemplate = cha.getTemplate().idTemplate;
        //_activeChar = cha;
        //_x = _activeChar.getX();
        //_y = _activeChar.getY();
        //_z = _activeChar.getZ();
        //_heading = cha.getOwner().getHeading();
        //_mAtkSpd = cha.getMAtkSpd();
        //_pAtkSpd = cha.getOwner().getPAtkSpd();
        //_runSpd = cha.getOwner().getRunSpeed();
        //_walkSpd = cha.getOwner().getWalkSpeed();
        //_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
        //_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
    //}
	   
	@Override
        public void readP()
	{
	    //if (_idTemplate > 13070 && _idTemplate < 13077)
        //{
                
	        //writeC(0x31);
            //writeD(_x);
            //writeD(_y);
            //writeD(_z);
            //writeD(_heading);
            //writeD(_activeChar.getObjectId());
            //writeS(((L2Decoy)_activeChar).getOwner().getAppearance().getVisibleName());
            //writeD(((L2Decoy)_activeChar).getOwner().getRace().ordinal());
            //writeD(((L2Decoy)_activeChar).getOwner().getAppearance().getSex()? 1 : 0);

            //if (((L2Decoy)_activeChar).getOwner().getClassIndex() == 0)
                //writeD(((L2Decoy)_activeChar).getOwner().getClassId().getId());
            //else
                //writeD(((L2Decoy)_activeChar).getOwner().getBaseClass());
//
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
            
             // T1 new d's 
            //writeD(0x00); 
            //writeD(0x00); 
            //writeD(0x00); 
            //writeD(0x00); 
            //writeD(0x00); 
            //writeD(0x00); 
            //writeD(0x00); 
            //writeD(0x00); 
             //// end of t1 new d's 

            // c6 new h's
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeD(((L2Decoy)_activeChar).getOwner().getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND));
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);
            //writeH(0x00);

            
            // T1 new h's 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 
            //writeH(0x00); 

            // end of t1 new h's 
            
            
            //writeD(((L2Decoy)_activeChar).getOwner().getPvpFlag());
            //writeD(((L2Decoy)_activeChar).getOwner().getKarma());
//
            //writeD(_mAtkSpd);
            //writeD(_pAtkSpd);
//
            //writeD(((L2Decoy)_activeChar).getOwner().getPvpFlag());
            //writeD(((L2Decoy)_activeChar).getOwner().getKarma());
//
            //writeD(_runSpd);
            //writeD(_walkSpd);
            //writeD(50);  // swimspeed
            //writeD(50);  // swimspeed
            //writeD(_flRunSpd);
            //writeD(_flWalkSpd);
            //writeD(_flyRunSpd);
            //writeD(_flyWalkSpd);
            //writeF(((L2Decoy)_activeChar).getOwner().getMovementSpeedMultiplier()); // _activeChar.getProperMultiplier()
            //writeF(((L2Decoy)_activeChar).getOwner().getAttackSpeedMultiplier()); // _activeChar.getAttackSpeedMultiplier()
             //L2Summon pet = _activeChar.getPet(); 
                //L2Transformation trans; 
                //if (((L2Decoy)_activeChar).getOwner().getMountType() != 0 && pet != null) 
                //{ 
                    //writeF(pet.getTemplate().collisionRadius); 
                    //writeF(pet.getTemplate().collisionHeight); 
                //} 
                //else if ((trans = ((L2Decoy)_activeChar).getOwner().getTransformation()) != null) 
                //{ 
                    //writeF(trans.getCollisionRadius()); 
                    //writeF(trans.getCollisionHeight()); 
                //} 
                //else 
                //{ 
                    //writeF(((L2Decoy)_activeChar).getOwner().getBaseTemplate().collisionRadius); 
                    //writeF(((L2Decoy)_activeChar).getOwner().getBaseTemplate().collisionHeight); 
                //} 
//
            //writeD(((L2Decoy)_activeChar).getOwner().getAppearance().getHairStyle());
            //writeD(((L2Decoy)_activeChar).getOwner().getAppearance().getHairColor());
            //writeD(((L2Decoy)_activeChar).getOwner().getAppearance().getFace());
//
            //writeS(((L2Decoy)_activeChar).getOwner().getAppearance().getVisibleTitle());
//
            //writeD(((L2Decoy)_activeChar).getOwner().getClanId());
            //writeD(((L2Decoy)_activeChar).getOwner().getClanCrestId());
            //writeD(((L2Decoy)_activeChar).getOwner().getAllyId());
            //writeD(((L2Decoy)_activeChar).getOwner().getAllyCrestId());
            //// In UserInfo leader rights and siege flags, but here found nothing??
            //// Therefore RelationChanged packet with that info is required
            //writeD(0);
//
            //writeC(((L2Decoy)_activeChar).getOwner().isSitting() ? 0 : 1);    // standing = 1  sitting = 0
            //writeC(((L2Decoy)_activeChar).getOwner().isRunning() ? 1 : 0);    // running = 1   walking = 0
            //writeC(((L2Decoy)_activeChar).getOwner().isInCombat() ? 1 : 0);
            //writeC(((L2Decoy)_activeChar).getOwner().isAlikeDead() ? 1 : 0);
//
            //writeC(((L2Decoy)_activeChar).getOwner().getAppearance().getInvisible() ? 1 : 0); // invisible = 1  visible =0
//
            //writeC(((L2Decoy)_activeChar).getOwner().getMountType()); // 1 on strider   2 on wyvern  3 on Great Wolf  0 no mount
            //writeC(((L2Decoy)_activeChar).getOwner().getPrivateStoreType());   //  1 - sellshop
//
            //writeH(((L2Decoy)_activeChar).getOwner().getCubics().size());
            //for (int id : ((L2Decoy)_activeChar).getOwner().getCubics().keySet())
                //writeH(id);
//
            //writeC(0x00);   // find party members
//
            //writeD(((L2Decoy)_activeChar).getOwner().getAbnormalEffect());
//
            //writeC(((L2Decoy)_activeChar).getOwner().getRecomLeft());                       //Changed by Thorgrim
            //writeH(((L2Decoy)_activeChar).getOwner().getRecomHave()); //Blue value for name (0 = white, 255 = pure blue)
            //writeD(((L2Decoy)_activeChar).getOwner().getClassId().getId());
//
            //writeD(((L2Decoy)_activeChar).getOwner().getMaxCp());
            //writeD((int) ((L2Decoy)_activeChar).getOwner().getCurrentCp());
            //writeC(((L2Decoy)_activeChar).getOwner().isMounted() ? 0 : ((L2Decoy)_activeChar).getOwner().getEnchantEffect());
//
            //if(((L2Decoy)_activeChar).getOwner().getTeam()==1)
                //writeC(0x01); //team circle around feet 1= Blue, 2 = red
            //else if(((L2Decoy)_activeChar).getOwner().getTeam()==2)
                //writeC(0x02); //team circle around feet 1= Blue, 2 = red
            //else
                //writeC(0x00); //team circle around feet 1= Blue, 2 = red
//
            //writeD(((L2Decoy)_activeChar).getOwner().getClanCrestLargeId());
            //writeC(((L2Decoy)_activeChar).getOwner().isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
            //writeC(((L2Decoy)_activeChar).getOwner().isHero() ? 1 : 0); // Hero Aura
//
            //writeC(((L2Decoy)_activeChar).getOwner().isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
            //writeD(((L2Decoy)_activeChar).getOwner().getFishx());
            //writeD(((L2Decoy)_activeChar).getOwner().getFishy());
            //writeD(((L2Decoy)_activeChar).getOwner().getFishz());
//
            //writeD(((L2Decoy)_activeChar).getOwner().getAppearance().getNameColor());
//
            //writeD(0x00); // isRunning() as in UserInfo?
//
            //writeD(((L2Decoy)_activeChar).getOwner().getPledgeClass());
            //writeD(0x00); // ??
//
            //writeD(((L2Decoy)_activeChar).getOwner().getAppearance().getTitleColor());
//
            ////writeD(0x00); // ??
//
            //if (((L2Decoy)_activeChar).getOwner().isCursedWeaponEquipped())
                //writeD(CursedWeaponsManager.getInstance().getLevel(((L2Decoy)_activeChar).getOwner().getCursedWeaponEquippedId()));
            //else
                //writeD(0x00);
//            
         //// T1 
            //writeD(0x00); 
//            
            //writeD(((L2Decoy)_activeChar).getOwner().getTranformationId()); 
        //}
        //else
	    //{
        //if (_activeChar instanceof L2Summon)
            //if (((L2Summon)_activeChar).getOwner() != null
                    //&& ((L2Summon)_activeChar).getOwner().getAppearance().getInvisible())
                //return;
//        
		//writeC(0x0c);
		Npc npc = new Npc(readD()); //writeD(_activeChar.getObjectId());
		npc.idTemplate = readD();//writeD(_idTemplate+1000000);  // npctype id
		npc.isAttackable = readD() == 1;//writeD(_isAttackable ? 1 : 0);
		npc.setPosition(new ObjectPosition(readD(),readD(),readD()));//writeD(_x);
		//writeD(_y);
		//writeD(_z);
		npc.getPosition().setHeading(readD());//writeD(_heading);
		readD();//writeD(0x00);
		npc.mAtkSpeed = readD();//writeD(_mAtkSpd);
		npc.pAtkSpeed = readD();//writeD(_pAtkSpd);
		npc.runSpeed = readD();//writeD(_runSpd);
		npc.walkSpeed = readD();//writeD(_walkSpd);
		npc.swimRunSpeed = readD();//writeD(_swimRunSpd/*0x32*/);  // swimspeed
		npc.swimWalkSpeed = readD();//writeD(_swimWalkSpd/*0x32*/);  // swimspeed
		npc.flyRunSpeed = readD();//writeD(_flRunSpd);
		npc.flyWalkSpeed = readD();//writeD(_flWalkSpd);
		readD();//writeD(_flyRunSpd);
		readD();//writeD(_flyWalkSpd);
		npc.movementSpeedMultiplier = readF();//writeF(1.1/*_activeChar.getProperMultiplier()*/);
		npc.attackSpeedMultiplier = readF();////writeF(1/*_activeChar.getAttackSpeedMultiplier()*/);
		readF();//writeF(_pAtkSpd/277.478340719);
		npc.radioColision = readF();//writeF(_collisionRadius);
		npc.alturaColision = readF();//writeF(_collisionHeight);
		npc.rhand = readD();//writeD(_rhand); // right hand weapon
		readD();//writeD(0);
		npc.lhand = readD();//writeD(_lhand); // left hand weapon
		readC();//writeC(1);	// name above char 1=true ... ??
		npc.isRunning = readC() == 1;//writeC(_activeChar.isRunning() ? 1 : 0);
		npc.isAttacked = readC() == 1;//writeC(_activeChar.isInCombat() ? 1 : 0);
		npc.isDead = readC() == 1;//writeC(_activeChar.isAlikeDead() ? 1 : 0);
		npc.isSummoned = readC() != 0;//writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false  1=true   2=summoned (only works if model has a summon animation)
		npc._name = readS();//writeS(_name);
		npc._title = readS();//writeS(_title);
		//if (_activeChar instanceof L2Summon){  
		readD();	//writeD(0x01);// Title color 0=client default  
		//}else{  
			//writeD(0x00);  
		//}  
//
		readD();//writeD(0);
		readD();//writeD(0000);  // hmm karma ??
//
		npc.abnormalEffect = readD();//writeD(_activeChar.getAbnormalEffect());  // C2
		//writeD(0000);  // C2
		//writeD(0000);  // C2
		//writeD(0000);  // C2
		//writeD(0000);  // C2
		//writeC(0000);  // C2
//
		//writeC(0x00);  // C3  team circle 1-blue, 2-red
		//writeF(_collisionRadius);
		//writeF(_collisionHeight);
		//writeD(0x00);  // C4
		//writeD(0x00);  // C6
		//writeD(0x00);
        //writeD(form);//CT1.5 Pet form and skills
	    //}
	}
//
	///* (non-Javadoc)
	 //* @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
	 //*/
	//@Override
	//public String getType()
	//{
		//return _S__22_NPCINFO;
	////////////}
}
